GPUが搭載されたEC2インスタンスのスペックと利用可能なAZを整理してみた
こんちには。
データ事業本部 インテグレーション部 機械学習チームの中村( @nokomoro3 )です。
今回はAWSで使用可能なGPUインスタンス(g系とp系)についての情報を整理してみました。
インスタンスのスペック、価格(オンデマンド)、利用可能なAZなどを分かるようにしています。
インスタンスのスペック
GPUインスタンスとスペック表になります。
GPUを使う上では通常のvCPU数やメモリ意外に、GPU数、GPUメモリ合計、1GPUあたりのGPUメモリなども重要となります。
実際、分散トレーニングをする上では、並列数を決めたり、分散方式を決めるうえでGPU数や1GPUあたりのGPUメモリを確認する必要があります。
g4dn / g4ad
g4dnはNVIDIA T4 GPUを搭載、g4adはAMD Radeon Pro V520 GPUを搭載しています。
g4dnはカスタムIntel Cascade Lake CPUを搭載し、g4adは第2世代AMD EPYCプロセッサを搭載しています。
インスタンス | CPU数 | メモリ(GiB) | GPU数 | GPUメモリ(GiB) | 1GPUあたりのGPUメモリ(GiB) | GPU名 |
---|---|---|---|---|---|---|
g4dn.xlarge | 4 | 16 | 1 | 16 | 16 | NVIDIA T4 |
g4dn.2xlarge | 8 | 32 | 1 | 16 | 16 | NVIDIA T4 |
g4dn.4xlarge | 16 | 64 | 1 | 16 | 16 | NVIDIA T4 |
g4dn.8xlarge | 32 | 128 | 1 | 16 | 16 | NVIDIA T4 |
g4dn.12xlarge | 48 | 192 | 4 | 64 | 16 | NVIDIA T4 |
g4dn.16xlarge | 64 | 256 | 1 | 16 | 16 | NVIDIA T4 |
g4dn.metal | 96 | 384 | 8 | 128 | 16 | NVIDIA T4 |
g4ad.xlarge | 4 | 16 | 1 | 8 | 8 | AMD Radeon Pro V520 |
g4ad.2xlarge | 8 | 32 | 1 | 8 | 8 | AMD Radeon Pro V520 |
g4ad.4xlarge | 16 | 64 | 1 | 8 | 8 | AMD Radeon Pro V520 |
g4ad.8xlarge | 32 | 128 | 2 | 16 | 8 | AMD Radeon Pro V520 |
g4ad.16xlarge | 64 | 256 | 4 | 32 | 8 | AMD Radeon Pro V520 |
g5 / g5g
g5はNVIDIA A10G Tensor Core GPUを搭載、g5gはNVIDIA T4G Tensor Core GPUを搭載しています。
g5は第2世代AMD EPYCプロセッサ、g5gはAWS Gravition2プロセッサが搭載されています。
インスタンス | CPU数 | メモリ(GiB) | GPU数 | GPUメモリ(GiB) | 1GPUあたりのGPUメモリ(GiB) | GPU名 |
---|---|---|---|---|---|---|
g5.xlarge | 4 | 16 | 1 | 24 | 24 | NVIDIA A10G |
g5.2xlarge | 8 | 32 | 1 | 24 | 24 | NVIDIA A10G |
g5.4xlarge | 16 | 64 | 1 | 24 | 24 | NVIDIA A10G |
g5.8xlarge | 32 | 128 | 1 | 24 | 24 | NVIDIA A10G |
g5.12xlarge | 48 | 192 | 4 | 96 | 24 | NVIDIA A10G |
g5.16xlarge | 64 | 256 | 1 | 24 | 24 | NVIDIA A10G |
g5.24xlarge | 96 | 384 | 4 | 96 | 24 | NVIDIA A10G |
g5.48xlarge | 192 | 768 | 8 | 192 | 24 | NVIDIA A10G |
g5g.xlarge | 4 | 8 | 1 | 16 | 16 | NVIDIA T4G |
g5g.2xlarge | 8 | 16 | 1 | 16 | 16 | NVIDIA T4G |
g5g.4xlarge | 16 | 32 | 1 | 16 | 16 | NVIDIA T4G |
g5g.8xlarge | 32 | 64 | 1 | 16 | 16 | NVIDIA T4G |
g5g.16xlarge | 64 | 128 | 2 | 32 | 16 | NVIDIA T4G |
g5g.metal | 64 | 128 | 2 | 32 | 16 | NVIDIA T4G |
- 参考リンク
g6 / gr6 / g6e
g6とgr6はNVIDIA L4 Tensor Core GPUを搭載、g6eはNVIDIA L40S Tensor Core GPUを搭載しています。
g6eは1GPUあたりのGPUメモリがg系のインスタンスの中で最も大きい48GBとなっています。
gr6はg6に対して、CPUに対するメモリが多く搭載されたインスタンスです。
CPUは第3世代のAMD EPYCプロセッサを備えています。
インスタンス | CPU数 | メモリ(GiB) | GPU数 | GPUメモリ(GiB) | 1GPUあたりのGPUメモリ(GiB) | GPU名 |
---|---|---|---|---|---|---|
g6.xlarge | 4 | 16 | 1 | 24 | 24 | NVIDIA L4 |
g6.2xlarge | 8 | 32 | 1 | 24 | 24 | NVIDIA L4 |
g6.4xlarge | 16 | 64 | 1 | 24 | 24 | NVIDIA L4 |
g6.8xlarge | 32 | 128 | 1 | 24 | 24 | NVIDIA L4 |
g6.12xlarge | 48 | 192 | 4 | 96 | 24 | NVIDIA L4 |
g6.16xlarge | 64 | 256 | 1 | 24 | 24 | NVIDIA L4 |
g6.24xlarge | 96 | 384 | 4 | 96 | 24 | NVIDIA L4 |
g6.48xlarge | 192 | 768 | 8 | 192 | 24 | NVIDIA L4 |
gr6.4xlarge | 16 | 128 | 1 | 24 | 24 | NVIDIA L4 |
gr6.8xlarge | 32 | 256 | 1 | 24 | 24 | NVIDIA L4 |
g6e.xlarge | 4 | 32 | 1 | 48 | 48 | NVIDIA L40S |
g6e.2xlarge | 8 | 64 | 1 | 48 | 48 | NVIDIA L40S |
g6e.4xlarge | 16 | 128 | 1 | 48 | 48 | NVIDIA L40S |
g6e.8xlarge | 32 | 256 | 1 | 48 | 48 | NVIDIA L40S |
g6e.16xlarge | 64 | 512 | 1 | 48 | 48 | NVIDIA L40S |
g6e.12xlarge | 48 | 384 | 4 | 192 | 48 | NVIDIA L40S |
g6e.24xlarge | 96 | 768 | 4 | 192 | 48 | NVIDIA L40S |
g6e.48xlarge | 192 | 1536 | 8 | 384 | 48 | NVIDIA L40S |
- 参考リンク
p2 / p3 / p3dn / p4d / p4de / p5 / p5e / p5en
p系のインスタンスは、ハイエンド向けのGPUが搭載されています。
インスタンス | CPU数 | メモリ(GiB) | GPU数 | GPUメモリ(GiB) | 1GPUあたりのGPUメモリ(GiB) | GPU名 |
---|---|---|---|---|---|---|
p2.xlarge | 4 | 61 | 1 | 12 | 12 | NVIDIA K80 |
p2.8xlarge | 32 | 488 | 8 | 96 | 12 | NVIDIA K80 |
p2.16xlarge | 64 | 732 | 16 | 192 | 12 | NVIDIA K80 |
p3.2xlarge | 8 | 61 | 1 | 16 | 16 | NVIDIA V100 |
p3.8xlarge | 32 | 244 | 4 | 64 | 16 | NVIDIA V100 |
p3.16xlarge | 64 | 488 | 8 | 128 | 16 | NVIDIA V100 |
p3dn.24xlarge | 96 | 768 | 8 | 256 | 32 | NVIDIA V100 |
p4d.24xlarge | 96 | 1152 | 8 | 320 | 40 | NVIDIA A100 |
p4de.24xlarge | 96 | 1152 | 8 | 640 | 80 | NVIDIA A100 |
p5.48xlarge | 192 | 2000 | 8 | 640 | 80 | NVIDIA H100 |
p5e.48xlarge | 192 | 2000 | 8 | 1128 | 141 | NVIDIA H200 |
p5en.48xlarge | 192 | 2000 | 8 | 1128 | 141 | NVIDIA H200 |
- 参考リンク
- https://aws.amazon.com/jp/ec2/instance-types/p2/
- https://aws.amazon.com/jp/blogs/news/new-p2-instance-type-for-amazon-ec2-up-to-16-gpus/
- https://aws.amazon.com/jp/blogs/news/new_amazon_ec2_instances_with_up_to_8_nvidia_tesla_v100_gpu_p3/
- https://aws.amazon.com/jp/about-aws/whats-new/2018/12/introducing-amazon-ec2-p3dn-instances-our-most-powerful-gpu-instance-yet/
- https://aws.amazon.com/jp/ec2/instance-types/p4/
- https://aws.amazon.com/jp/ec2/instance-types/p5/
インスタンスの価格
次に、各GPUインスタンスの価格になります。
オンデマンドで1時間あたりと1ヵ月あたりの価格を示しています。
なお基本的にはus-east-1の値を記載しています。
us-east1で使えない p5en.48xlarge
は、us-west-2の値を記載しています。
インスタンス | オンデマンド料金/hr | オンデマンド料金/mo | リージョン |
---|---|---|---|
g4dn.xlarge | 0.526 | 15.78 | us-east-1 |
g4dn.2xlarge | 0.752 | 22.56 | us-east-1 |
g4dn.4xlarge | 1.204 | 36.12 | us-east-1 |
g4dn.8xlarge | 2.176 | 65.28 | us-east-1 |
g4dn.12xlarge | 3.912 | 117.36 | us-east-1 |
g4dn.16xlarge | 4.352 | 130.56 | us-east-1 |
g4dn.metal | 7.824 | 234.72 | us-east-1 |
g4ad.xlarge | 0.379 | 11.36 | us-east-1 |
g4ad.2xlarge | 0.541 | 16.24 | us-east-1 |
g4ad.4xlarge | 0.867 | 26.01 | us-east-1 |
g4ad.8xlarge | 1.734 | 52.02 | us-east-1 |
g4ad.16xlarge | 3.468 | 104.04 | us-east-1 |
g5.xlarge | 1.006 | 30.18 | us-east-1 |
g5.2xlarge | 1.212 | 36.36 | us-east-1 |
g5.4xlarge | 1.624 | 48.72 | us-east-1 |
g5.8xlarge | 2.448 | 73.44 | us-east-1 |
g5.12xlarge | 5.672 | 170.16 | us-east-1 |
g5.16xlarge | 4.096 | 122.88 | us-east-1 |
g5.24xlarge | 8.144 | 244.32 | us-east-1 |
g5.48xlarge | 16.288 | 488.64 | us-east-1 |
g5g.xlarge | 0.420 | 12.60 | us-east-1 |
g5g.2xlarge | 0.556 | 16.68 | us-east-1 |
g5g.4xlarge | 0.828 | 24.84 | us-east-1 |
g5g.8xlarge | 1.372 | 41.16 | us-east-1 |
g5g.16xlarge | 2.744 | 82.32 | us-east-1 |
g5g.metal | 2.744 | 82.32 | us-east-1 |
g6.xlarge | 0.805 | 24.14 | us-east-1 |
g6.2xlarge | 0.978 | 29.33 | us-east-1 |
g6.4xlarge | 1.323 | 39.70 | us-east-1 |
g6.8xlarge | 2.014 | 60.43 | us-east-1 |
g6.12xlarge | 4.602 | 138.05 | us-east-1 |
g6.16xlarge | 3.397 | 101.90 | us-east-1 |
g6.24xlarge | 6.675 | 200.26 | us-east-1 |
g6.48xlarge | 13.350 | 400.51 | us-east-1 |
gr6.4xlarge | 1.539 | 46.18 | us-east-1 |
gr6.8xlarge | 2.446 | 73.39 | us-east-1 |
g6e.xlarge | 1.861 | 55.83 | us-east-1 |
g6e.2xlarge | 2.242 | 67.26 | us-east-1 |
g6e.4xlarge | 3.004 | 90.13 | us-east-1 |
g6e.8xlarge | 4.529 | 135.86 | us-east-1 |
g6e.16xlarge | 10.493 | 314.78 | us-east-1 |
g6e.12xlarge | 7.577 | 227.32 | us-east-1 |
g6e.24xlarge | 15.066 | 451.97 | us-east-1 |
g6e.48xlarge | 30.131 | 903.94 | us-east-1 |
p2.xlarge | 0.900 | 27.00 | us-east-1 |
p2.8xlarge | 7.200 | 216.00 | us-east-1 |
p2.16xlarge | 14.400 | 432.00 | us-east-1 |
p3.2xlarge | 3.060 | 91.80 | us-east-1 |
p3.8xlarge | 12.240 | 367.20 | us-east-1 |
p3.16xlarge | 24.480 | 734.40 | us-east-1 |
p3dn.24xlarge | 31.212 | 936.36 | us-east-1 |
p4d.24xlarge | 32.773 | 983.18 | us-east-1 |
p4de.24xlarge | 40.966 | 1228.97 | us-east-1 |
p5.48xlarge | 98.320 | 2949.60 | us-east-1 |
p5e.48xlarge | - | - | - |
p5en.48xlarge | 84.800 | 2544.00 | us-west-2 |
また p5e.48xlarge
はEC2 Capacity Blocks for ML pricingを使う必要があるため、今回記載していません。
詳細はEC2 Capacity Blocks for ML pricingのページをご覧ください。
- 参考リンク
利用可能なAZ
以下の5つのリージョンでこちらは確認いたしました。またInstanceFamily内では異ならないため、InstanceFamilyごとに記載しています。
- us-east-1(バージニア)
- us-west-2(オレゴン)
- us-east-2(オハイオ)
- ap-northeast-1(東京)
- ap-northeast-3(大阪)
us-east-1(バージニア)
us-east-1eとus-east-1fは使用できるインスタンスが限られているので注意が必要です。
p5はus-east-1fでのみ利用可能となっていますが、p5eとp5enはこのリージョンはまだ利用できないようです。
InstanceFamily | us-east-1a | us-east-1b | us-east-1c | us-east-1d | us-east-1e | us-east-1f |
---|---|---|---|---|---|---|
g4ad | 1 | 1 | 1 | 1 | ||
g4dn | 1 | 1 | 1 | 1 | 1 | |
g5 | 1 | 1 | 1 | 1 | 1 | |
g5g | 1 | 1 | 1 | 1 | ||
g6 | 1 | 1 | 1 | 1 | ||
g6e | 1 | 1 | 1 | 1 | ||
gr6 | 1 | 1 | 1 | 1 | ||
p2 | 1 | 1 | 1 | 1 | 1 | |
p3 | 1 | 1 | 1 | 1 | ||
p3dn | 1 | 1 | ||||
p4d | 1 | 1 | 1 | |||
p5 | 1 | |||||
p5e | ||||||
p5en |
us-west-2(オレゴン)
us-west-2dは使用できるインスタンスが限られているので注意が必要です。
p5enはus-west-2bとus-west-2dでのみ利用可能となっていますが、p5eはまだ利用できないようです。
InstanceFamily | us-west-1a | us-west-1b | us-west-2a | us-west-2b | us-west-2c | us-west-2d |
---|---|---|---|---|---|---|
g4ad | 1 | 1 | 1 | |||
g4dn | 1 | 1 | 1 | 1 | 1 | |
g5 | 1 | 1 | 1 | |||
g5g | 1 | 1 | 1 | |||
g6 | 1 | 1 | 1 | |||
g6e | 1 | 1 | 1 | 1 | ||
gr6 | 1 | 1 | 1 | |||
p2 | 1 | 1 | 1 | |||
p3 | 1 | 1 | 1 | |||
p3dn | 1 | 1 | ||||
p4d | 1 | 1 | 1 | |||
p5 | 1 | 1 | 1 | 1 | 1 | |
p5e | ||||||
p5en | 1 | 1 |
us-east-2(オハイオ)
p5、p5e、p5enともに利用できるAZがありますが、g5gとp3はこのリージョンでは利用できないようです。
InstanceFamily | us-east-2a | us-east-2b | us-east-2c |
---|---|---|---|
g4ad | 1 | 1 | 1 |
g4dn | 1 | 1 | 1 |
g5 | 1 | 1 | 1 |
g5g | |||
g6 | 1 | 1 | 1 |
g6e | 1 | 1 | 1 |
gr6 | 1 | 1 | 1 |
p2 | 1 | 1 | 1 |
p3 | 1 | 1 | |
p3dn | |||
p4d | 1 | 1 | |
p5 | 1 | 1 | |
p5e | 1 | ||
p5en | 1 | 1 | 1 |
ap-northeast-1(東京)
ap-northeast-1dは使用できるインスタンスが限られているので注意が必要です。
p5enはap-northeast-1aでのみ利用可能となっていますが、p5eはまだ利用できないようです。
InstanceFamily | ap-northeast-1a | ap-northeast-1c | ap-northeast-1d |
---|---|---|---|
g4ad | 1 | 1 | 1 |
g4dn | 1 | 1 | 1 |
g5 | 1 | 1 | |
g5g | 1 | 1 | |
g6 | 1 | 1 | |
g6e | 1 | 1 | |
gr6 | 1 | 1 | |
p2 | 1 | 1 | |
p3 | 1 | 1 | |
p3dn | 1 | ||
p4d | 1 | ||
p5 | 1 | 1 | |
p5e | |||
p5en | 1 |
ap-northeast-3(大阪)
g4dnのみが利用可能となっており、対応AZもap-northeast-3bとap-northeast-3cのみとなっています。
InstanceFamily | ap-northeast-3a | ap-northeast-3b | ap-northeast-3c |
---|---|---|---|
g4ad | |||
g4dn | 1 | 1 | |
g5 | |||
g5g | |||
g6 | |||
g6e | |||
gr6 | |||
p2 | |||
p3 | |||
p3dn | |||
p4d | |||
p5 | |||
p5e | |||
p5en |
ご参考:使用したコード
import boto3
import polars as pl
# 使用するAWSプロファイル名
profile_name = "your_profile_name"
# 対象リージョンをリストで指定
regions = [
"ap-northeast-1",
"ap-northeast-3",
"us-east-1",
"us-east-2",
"us-west-1",
"us-west-2",
]
# プロファイルを指定してセッションを作成
session = boto3.Session(profile_name=profile_name)
data = []
# EC2クライアントを作成してデータを収集
for region in regions:
ec2 = session.client("ec2", region_name=region)
paginator = ec2.get_paginator("describe_instance_type_offerings")
for page in paginator.paginate(LocationType="availability-zone"):
for offering in page["InstanceTypeOfferings"]:
offering["Region"] = region # リージョン情報を追加
data.append(offering)
# Polarsのデータフレームに変換
df = pl.DataFrame(data)
df\
.sort(by="Location")\
.with_columns(
pl.col("InstanceType").str.split(".").list.first().alias("InstanceFamily")
, pl.lit(1).alias("IsAvailable")
).select([
pl.exclude(["LocationType", "Region", "InstanceType"])
])\
.unique()\
.sort(by=["Location"])\
.pivot(on="Location", index="InstanceFamily")\
.sort(by=["InstanceFamily"])\
.filter(
(pl.col("InstanceFamily").str.starts_with("g"))
| (pl.col("InstanceFamily").str.starts_with("p"))
| (pl.col("InstanceFamily").str.starts_with("inf"))
| (pl.col("InstanceFamily").str.starts_with("trn"))
)\
.write_csv("available-instance-per-region.csv")
まとめ
いかがでしたでしょうか。
本記事がAWSでGPUインスタンスを使用される方のご参考になれば幸いです。